/**
 * TS中的类型
 *  any  some
 * 
 *   anyscript   javascript 
 */

// let a:any

// a = "张飞"
// a = 100


/**
 * unknown  类型 安全的  any
 */

// 设置a的类型为unknown
// let a: unknown
// //以下对a的赋值，均符合规范 a = 100
// a = false
// a = '你好'


// // 设置x的数据类型为string
// let x: string
// // x = a //警告：不能将类型“unknown”分配给类型“string”
// if(typeof a ==='string'){
//     x = a
// }






/**
 * never
 */


function sum(numa:number,numb:number):never{
    throw new Error("aaaaa")
}


/**
 * void
 * 
 */



/**
 * 方法没有写return 默认返回的是undefined
 */
function sayHi():void{

    console.log("Hello");
    
}


let result = sayHi()
console.log("result",result);
console.log("result",result+'');

//原始类型
let  mystr1:string = "张三"
//包装类
let mystr2:String = new String("李四")


//自动装箱
console.log(mystr1.length);


//因为String类型本身就可以 有length
console.log(mystr2.length);



/**
 * object 
 */

let a:object //a的值可以是任何【⾮原始类型】，包括：对象、函数、数组等
// 以下代码，是将【⾮原始类型】赋给a，所以均符合要求 
a = {} 
a = {name:'张三'}
a = [1,3,5,7,9] 
a = function(){} 
a = new String('123')
class Person {} 
a = new Person()









